iT邦幫忙

2024 iThome 鐵人賽

DAY 29
1

經過了將近一個月的文章撰寫與探討,我們終於來到了系列文章的尾聲。Rust 是一門強大且有潛力的語言,從語法的基礎,再到進階概念與網頁應用的實現。但是相信對於熟悉 Python 的開發者而言,應該還是沒有辦法透過系列文章的內容學到紮實的 Rust 開發能力,頂多就只是有個概念上的認識而已,所以我們今天要來盤點一下,有哪些可以幫助我們練習 Rust 開發實戰經驗的學習資源呢。

一、Rust學習資源

下面整理了一些可以協助我們統整關於 Rust 開發時必學的關鍵概念,每一篇都可以讓我們利用零碎的時間來更熟悉這些技術,並且幫助我們從理解到實作的過程逐步提升 Rust 的開發能力。

1. Rust 官方學習手冊

https://ithelp.ithome.com.tw/upload/images/20241012/201211765hQN1OxBJC.png

Rust 官方學習手冊是一個極為詳細的資源,從入門到進階,循序漸進地引導讀者了解 Rust 語言的設計理念與應用方式。對於熟悉 Python 語言的人來說,這個手冊有助於幫助你熟悉 Rust 的所有權機制、記憶體管理與多線程開發等關鍵概念。無論是基礎語法還是高階應用,都可以透過這個手冊進行系統化的學習。

2. A half-hour to learn Rust

https://ithelp.ithome.com.tw/upload/images/20241012/201211769t00euXhJm.png

"半小時學習Rust"這篇文章的好處是,透過具體的片段來說明Rust程式碼的實際編寫需要注意的地方,很適合用零碎的方式來慢慢熟悉Rust開發的方法,也是一篇在有基礎概念之後作為複習專用的入門用文章。

3. Rust by Example

當我們剛開始學習一項程式語言的時候,要我們自己從 0 到 1 撰寫一個程式碼,可能都還沒有辦法直接反射動作寫出來,這個狀態最需要的就是閱讀大量範例,而在Rust當中, Rust by Example 就是一個很好的資源。

https://ithelp.ithome.com.tw/upload/images/20241012/201211767g32F3bYPd.png

這是一個展示 Rust 各種入門或進階功能及用法的網站,它透過具體的例子來說明 Rust 語法和其應用情境。如果你對語法的理解已經有一定的基礎,但想要看到更多實際應用案例,那麼這個網站是很好的參考資源,能夠幫助你從抽象的概念轉變為實際應用的技巧,僅僅是快速閱覽一遍,功力就一定能有所提升。

4. The Rust Programming Language

https://ithelp.ithome.com.tw/upload/images/20241012/20121176fi6EqIqdVg.png

被社群稱為 "The Book" 的手冊,是學習 Rust 語言的絕佳教材。它深入講解了 Rust 的各個細節,並且附帶許多程式範例,對於想要全面掌握 Rust 的開發者來說,這個手冊不可或缺。特別是當你遇到比較進階的需求,例如系統編程或網絡應用開發時,這本書能夠幫助你全面掌握 Rust 的潛力。

好消息是,也有部分中文版網站唷:

https://ithelp.ithome.com.tw/upload/images/20241012/20121176qCXWUSGIGd.png

二、強化實戰經驗的學習資源

僅僅透過閱讀和理解語法並不足以真正掌握一門程式語言。實作與實戰經驗是關鍵。以下幾個資源可以讓我們通過專案或挑戰來實際練習 Rust 開發,強化實戰能力:

1. Rustlings

https://ithelp.ithome.com.tw/upload/images/20241012/20121176i0qg2ifHjH.png

Rustlings 是一個麻省理工學院所開發維護的互動式學習資源,透過練習題幫助開發者理解 Rust 的語法及其特性。它為你提供實際的問題與挑戰,並引導你透過修改程式碼來解決問題,這是一個非常有效的實戰練習資源,特別是對於剛剛接觸 Rust 的 Python 開發者來說,Rustlings 是很好的練習工具。

那怎麼使用呢?首先我們先安裝 rustlings ,先找一個你想要存放練習範例的資料夾,並且在該路徑下直接從終端機輸入安裝指令

cargo install rustlings

安裝完畢之後,接下來輸入初始化的指令

rustlings init

那指定路徑下就會產生一個 rustlings 的資料夾,完成的資料夾檔案結構如下:

- 根目錄/
    - .git/
    - .vscode/
    - exercises/
    - solutions/
    - .gitignore
    - Cargo.toml

接下來如果我們想要開始進行練習,只需要輸入下列指令

cd rustlings
rustlings run

rustlings 就會開啟練習專案,我們就可以開始進行 rust 開發練習了
https://ithelp.ithome.com.tw/upload/images/20241012/20121176xudYLzSY5r.png

第一題直接就完成了,如果要下一題開始的話,可以直接點連結開啟下一個練習檔案
https://ithelp.ithome.com.tw/upload/images/20241012/20121176zdK6C2NR3B.png

將程式碼當中的 printline!("Hello world!"); 改成 println!("Hello world!"); 並儲存之後,終端機會跳出執行結果,如果成功就會出現進入下一題的訊息,按下 n 跳出下一題,如果沒有看到可以輸入 rustlings 讓程式重新進入監看狀態
https://ithelp.ithome.com.tw/upload/images/20241012/201211763EXexbLjK8.png

按下 h 可以在終端機得到修改提示,按下 l 可以查看自己目前所在的題項

提示:
https://ithelp.ithome.com.tw/upload/images/20241012/20121176FA7AgRQCs3.png

題庫列表:
https://ithelp.ithome.com.tw/upload/images/20241012/20121176ifEcWlqZqD.png

馬上來測試看看自己目前的實力吧!

2. Exercism - Rust Track

https://ithelp.ithome.com.tw/upload/images/20241012/20121176PhC9MfUs2r.png

Exercism 是一個提供程式挑戰與社群互動的平台。它的 Rust Track 提供了一系列 Rust 挑戰,從簡單的基礎概念到更具挑戰性的專案,幫助你一步一步提升你的實戰經驗。完成挑戰後,你還可以與全球的 Rust 開發者交流討論,獲得反饋與建議。

當我們進入 Exercism 的首頁,可以用 github 帳號登入,可以到 Practice 裡面找到練習範例,裡面有多項主題的練習範例,支援線上編輯與本機端編輯,所以對於不想要特別安裝測試專案的人來說也相當方便

https://ithelp.ithome.com.tw/upload/images/20241012/201211764dfrd0w67n.png

試著征服這些題目吧!

3. Comprehensive Rust 🦀 課程

https://ithelp.ithome.com.tw/upload/images/20241012/20121176tRPvJGN5aE.png

這是一個由Google 的 Android 團隊負責開發與維護,最棒的是他們還有建立了一個 PDF檔案 來介紹這個課程,課程內容相當豐富,可以看到光是課程PDF內容就有300多頁可以瀏覽,其中又特別包含了 AndroidChromiumBare-metalConcurrency 等主題是內容,而且具有中文翻譯可以參考,這也是對於Rust語言學習者珍貴的學習資源。

三、系列文內容摘要與索引

筆者在這個鐵人賽的過程中,撰寫了28篇文章,從語法入門到實戰應用,目的是幫助 Python 開發者們學習 Rust。這是一趟挑戰自我的旅程,我們一起從基礎開始,逐步深入。為了方便讀者回顧與查找特定主題,以下提供了 28 篇文章的主題與內容摘要表,供大家參考:

天數 主題 內容摘要
1 Rust 是什麼?為什麼 Python 開發者應該學習 Rust? 介紹 Rust 的基本特性及 Python 開發者學習它的理由
2 安裝與設定 Rust 開發環境:初始步驟 引導讀者安裝 Rust 並配置開發環境
3 Rust 語法速覽:與 Python 的基本語法比較 比較 Rust 與 Python 的語法差異,概覽基本結構
4 建構任務管理工具:Rust 變數與資料類別的實戰應用 透過實戰範例介紹變數和資料類別在 Rust 中的應用
5 深入理解所有權與借用:Rust 的記憶體安全之鑰 深入解釋所有權與借用在 Rust 中的重要性與實現
6 Rust 的流程控制(if, loop, match):與 Python 的對比 探討 Rust 中的控制流與 Python 的差異
7 函數與方法定義:如何在 Rust 中設計函數 說明如何定義和使用函數與方法
8 結構體與元組:自定義類別 介紹如何在 Rust 中使用結構體與元組來定義複合資料
9 Rust 中的枚舉:代碼範例與應用 展示 Rust 中的枚舉語法及其應用
10 錯誤處理:探討 Rust 的 Result 與 Option 解釋 Rust 的錯誤處理機制,特別是 Result 與 Option
11 Rust 的模組與套件管理:如何引用模組 介紹模組化與套件管理的實踐方法
12 Cargo:Rust 的建置工具與套件管理器 詳述 Cargo 的作用,如何使用它進行專案管理
13 使用迭代器與集合:Rust 中常見的集合處理 討論集合和迭代器的應用,與 Python 的對比
14 Rust 中的模式匹配:match 的進階應用 展示如何進階使用 match 進行模式匹配
15 並行編程:Rust 的 threads 與 async 探討 Rust 的多執行緒與異步處理
16 泛型與特徵物件:提升 Rust 代碼的彈性與重用性 解釋泛型與特徵物件的應用來提升代碼的彈性
17 建立你的第一個 Rust CLI 應用程式 引導建立 CLI 應用並展示其基本結構
18 Rust 與 WebAssembly:在網頁上使用 Rust 介紹如何使用 WebAssembly 與 Rust 開發網頁應用
19 Rust 與 React 結合:建立簡單的 Web 應用 探討如何將 Rust 和 React 結合來建構全端應用
20 Rust 與 Python 的 FFI 互通操作指南 探討如何使用 FFI 實現 Rust 與 Python 的互通
21 淺談 Rust 巨集(一):自建的程式工廠 介紹 Rust 宣告式巨集的概念與實作
22 淺談 Rust 巨集(二):不再重覆製造輪子 介紹 Rust 程序式巨集的概念與實作
23 Rust 的測試框架:單元測試 & 集成測試 說明 Rust 測試框架的用法與測試策略
24 Rust 的 Web 應用(一):簡介 Actix 框架 簡介 Actix 框架及其在 Web 開發中的應用
25 Rust 的 Web 應用(二):探索 Rocket 框架 探討另一個 Web 框架 Rocket 並與 Actix 比較
26 Rust 的 Web 應用(三):使用 Rocket 與 MongoDB 建立 RESTful API 展示如何結合 Rocket 與 MongoDB 構建 API
27 Rust 的 Web 應用(四):Rust + React 全端開發 探討如何使用 Rust 與 React 進行全端開發
28 Rust 的 Web 應用(五):React 分頁管理 教學如何在 React 中實現分頁管理功能

總結

在這個系列文章的最後,我們回顧了學習 Rust 的各種資源,從入門到進階,從理論到實作,這些資源都能夠幫助你一步步提升對 Rust 的理解與應用能力。對於 Python 開發者來說,學習 Rust 或許需要一些時間來適應它的所有權系統、變數定義方式、泛型與特徵、多線程模式等,但這將會是一個非常值得的投資。

如果你想要進一步深化對 Rust 的學習,可以考慮參加開源專案的開發,或者自己創建一些小型專案來練習。Rust 社群非常活躍,參與社群活動、閱讀他人的程式碼,也能讓你更快上手這門語言,就像筆者這次主要也是為了進一步熟悉 Rust 的程式語言而參與此次鐵人賽一樣,雖然內容很多,但是讓自己沉浸在Rust開發的學習過程中,從現階段可理解的部分慢慢開始,總有一天會成為得心應手的Rust開發者的,與大家共勉之!


上一篇
[Day 28] Rust 的 Web 應用(五):React 分頁管理
下一篇
[Day 30] Rust 回頭是岸:以終為始-初心者
系列文
從 Python 開發者的角度學習 Rust —— 從語法基礎到實戰應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言